package com.ykyl.pojo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ykyl.base.BaseVo;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName TradingVo.java
 *  交易结果
 */
@Data
@NoArgsConstructor
public class TradingVo extends BaseVo {

    private static final long serialVersionUID = 1L;

    @Builder
    public TradingVo(Long id, String dataState, String openId, Long productOrderNo, Long tradingOrderNo, String tradingChannel, Integer tradingState, String payeeName, Long payeeId, String payerName, Long payerId, BigDecimal tradingAmount, BigDecimal refund, String isRefund, String resultCode, String resultMsg, String resultJson, String placeOrderCode, String placeOrderMsg, String placeOrderJson, Long enterpriseId, Long storeId, String memo, String qrCodeImageBase64, Long outRequestNo, BigDecimal operTionRefund, String authCode, String quitUrl, String returnUrl, String billType, Date billDate, String billDownloadUrl) {
        super(id, dataState);
        this.openId = openId;
        this.productOrderNo = productOrderNo;
        this.tradingOrderNo = tradingOrderNo;
        this.tradingChannel = tradingChannel;
        this.tradingState = tradingState;
        this.payeeName = payeeName;
        this.payeeId = payeeId;
        this.payerName = payerName;
        this.payerId = payerId;
        this.tradingAmount = tradingAmount;
        this.refund = refund;
        this.isRefund = isRefund;
        this.resultCode = resultCode;
        this.resultMsg = resultMsg;
        this.resultJson = resultJson;
        this.placeOrderCode = placeOrderCode;
        this.placeOrderMsg = placeOrderMsg;
        this.placeOrderJson = placeOrderJson;
        this.enterpriseId = enterpriseId;
        this.storeId = storeId;
        this.memo = memo;
        this.qrCodeImageBase64 = qrCodeImageBase64;
        this.outRequestNo = outRequestNo;
        this.operTionRefund = operTionRefund;
        this.authCode = authCode;
        this.quitUrl = quitUrl;
        this.returnUrl = returnUrl;
        this.billType = billType;
        this.billDate = billDate;
        this.billDownloadUrl = billDownloadUrl;
    }

    private String openId;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long productOrderNo;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long tradingOrderNo;

    private String tradingChannel;

    private Integer tradingState;

    private String payeeName;

    private String tradingType;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long payeeId;

    private String payerName;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long payerId;

    private BigDecimal tradingAmount;

    private BigDecimal refund;

    private String isRefund;

    private String resultCode;

    private String resultMsg;

    private String resultJson;

    private String placeOrderCode;

    private String placeOrderMsg;

    private String placeOrderJson;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long enterpriseId;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long storeId;

    private String memo;

    private String qrCodeImageBase64;

    private Long outRequestNo;

    private BigDecimal operTionRefund;

    private String authCode;

    private String quitUrl;

    private String returnUrl;

    private String billType;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")//get
    protected Date billDate;

    private String billDownloadUrl;

    String phone;
}
